package com.auxgroup.hr.front.service.comm;

import java.util.List;

import com.auxgroup.hr.front.dao.domain.PsCPrcTypeVw;
import com.auxgroup.hr.front.dao.domain.PsRsActDtlTbl;
import com.auxgroup.hr.front.dao.domain.Psxlatitem;

/**
 * 字典服务类
 *
 * @author lvliuhao
 * @version 创建时间：180523
 */
public interface SysDictService {
    /**
     * 获取具体字典值
     *
     * @return
     */
    Psxlatitem getSysDict(String fileName, String fileValue);

    /**
     * 获取字典列表
     *
     * @param String
     * @return
     */
    List<Psxlatitem> getSysDict(String fileName);

    /**
     * 获取岗位描述
     *
     * @param setId   流程头表的setid
     * @param jobCode 流程头表的jobcode
     * @return
     */
    String getJobDesc(String setId, String jobCode);

    /**
     * 获取岗位性质简短描述
     *
     * @param jobType 岗位性质
     * @return
     */
    String getJobPropertyDescshort(String jobType);

    /**
     * 根据流程编号查流程名称
     *
     * @param cTransactionNbr
     * @return
     */
    String getWfTitle(String cTransactionNbr);


    /**
     * 获取岗位列表
     *
     * @param setID
     * @return
     */
    List<Object[]> getJobListBySetid(String setID);

    /**
     * 动态查询sql语句
     *
     * @param querySql
     * @param args
     * @return
     */
    List<Object[]> getObjectListFromSql(String querySql, Object[] args);


    /**
     * 动态查询sql语句，返回单字段
     *
     * @param querySql
     * @param args
     * @return
     */
    List<String> getStringFromSql(String querySql, Object[] args);


    /**
     * 动态查询sql到实体类
     *
     * @param querySql
     * @param args
     * @param entity
     * @return
     */
    List<Object> getObjectListFromSql(String querySql, Object[] args, Class<?> entity);


    /**
     * 离职原因列表
     *
     * @return
     */
    List<Object[]> getActionResons(String action);


    /**
     * 离职原因详细列表
     *
     * @param actionReason
     * @return
     */
    List<PsRsActDtlTbl> getTerDetails(String actionReason);

    /**
     * 根据不同的字典
     *
     * @param dictType 字典类型(对应的字典字段驼峰)
     * @param dictKey  字典key(对应的字典字段的值)
     * @return
     */
    String getSingleTableDict(String dictType, String dictKey);


    /**
     * 查询所有的转正类型
     *
     * @return
     */
    List<PsCPrcTypeVw> getPrcTypes();


    /**
     * 查询发薪单位
     *
     * @param company
     * @return
     */
    String getPayCompany(String company);

    /**
     * 查询薪资组
     *
     * @param pygroup
     * @return
     */
    String getPygrp(String pygroup);

    //社保缴纳地查询
    String getSilDescr(String silCode);

    //部门查询
    String getDeptDescr(String deptId);

    /**
     * 查询社保和公积金缴纳单位
     *
     * @param company
     * @return
     */
    String getSiCompany(String company);


    /**
     * 查询成本控制中心
     *
     * @param costCenter
     * @return
     */
    String getCostCtr(String costCenter);


    /**
     * 获取部门全称
     *
     * @param setId
     * @param deptId
     * @return
     */
    String getDetpFullName(String setId, String deptId);

    /**
     * 获取业务单位名称
     *
     * @param businessUnit
     * @return
     */
    String getBusinessName(String businessUnit);

    /**
     * 获取员工拼接信息 姓名_事业部_所属部门_岗位描述
     *
     * @param emplid
     * @return
     */
    String getJobJointDesc(String emplid);

    /**
     * 获取部门经理
     *
     * @param setidJobcode
     * @return
     */
    String getUnitManagerName(String setidJobcode);

    /**
     * 获取事业部经理
     *
     * @param deptid
     * @return
     */
    String getDeptManagerName(String deptid);


    /**
     * 休假校验
     *
     * @param leaveType
     * @return
     */
    String getLeaveLeftValid(String leaveType);


    /**
     * 拼接分权引用流程数查询SQL
     *
     * @param processType 流程类别
     * @param isAll       是否查询全部相关流程
     * @return
     */
    String jointFqyySql(String processType, Boolean isAll);

    /**
     * 获取无分权引用流程总数
     * @param processType 流程类别
     * @return
     */
    Integer getNoFqyySum(String processType);

    /**
     * 获取总流程数
     * @param processType 流程类别
     * @return
     */
    Integer getProcessTotalSum(String processType);

    /**
     * 获取流程的分权引用信息
     *
     * @param cTransactionNbr 审批编号
     * @return
     */
    List<String> getFqyyInfo(String cTransactionNbr);

    /**
     * 获取体系负责人标识
     */
    List<String> getAuxSystemInfo(String badge);

    /**
     * 获取员工审批中的加班天数
     * @param emplId
     * @return
     */
    Double getProcessingOverTimeDays(String emplId);


    /**
     * 根据账号查询员工所在事业部编码
     * @param acc
     * @return
     */
    String getBuByAccount(String acc);

}
